<script>
/* 
    函数：
    创建函数的方式
        1、函数声明语句  function name(形参){函数体} 有名函数 不需要使用分号
            整个函数的声明提前
            会产生name属性
        2、匿名函数表达式语句 var a= function(形参){}  匿名函数
            什么时候用： 函数表达式语句  对象加方法   回调函数
            变量会提升，赋值不会提前
        3.命名函数表达式

        4.箭头函数 ()=>{}
            不会创建执行上下文环境 没有this
            是一个匿名函数，name属性是一个空字符串
            没有arguments对象
        5.函数生成器
            多个yield  即多个return   
            返回时迭代器的对象 需要进行赋值 value  down
        6.函数构造器
            new Function()




*/
// 函数声明语句
function ok(){

}
console.log(ok.name);

// 命名函数表达式
var o = function i(){
    console.log(typeof i);
    console.log("里面可以获取i");
}
o();
//i();//i未定义
console.log(typeof i);//获取不到i

// 匿名函数表达式
var he = function(){
    console.log(typeof he);
}
he()
console.log(typeof he);

</script>